package ar.com.gestion.listeners;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Timestamp;
import java.util.Date;
import java.util.LinkedList;

import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JTextField;

import ar.com.gestion.bo.VentasBO;
import ar.com.gestion.dominio.Cliente;
import ar.com.gestion.dominio.Fiado;
import ar.com.gestion.dominio.Pago;
import ar.com.gestion.dominio.Producto;
import ar.com.gestion.dominio.Venta;
import ar.com.gestion.springcontext.SpringContext;
import ar.com.gestion.ventas.ModuloVentas;
import ar.com.gestion.vistas.ViewVender;

public class VenderListener implements ActionListener {

	private ModuloVentas moduloVentas = (ModuloVentas) SpringContext
			.getContext().getBean("moduloVentas");

	private VentasBO ventasBO = (VentasBO) SpringContext.getContext().getBean(
			"ventasBO");

	
	private JCheckBox checkBox;
	private JComboBox<Cliente> comboCliente;
	private JTextField textFiado;
	private JComboBox<Integer> comboPagos;
	private JTextField total;
    private JCheckBox check;
    private ViewVender viewVender;
    private JLabel labelTotal;
    
	public VenderListener(ViewVender viewVender) {
		this.viewVender = viewVender;
		comboCliente = viewVender.getComboCliente();
		comboPagos = viewVender.getComboPagos();
		textFiado= viewVender.getTextFiado();
		total =  viewVender.getTotal();
		check = viewVender.getCheckBox();
		textFiado = viewVender.getTextFiado();
		labelTotal = viewVender.getLabelTotal();

	}

	@Override
	public void actionPerformed(ActionEvent e) {
		Venta venta = new Venta();
		venta.setVendedor(moduloVentas.getVendedor());
		venta.setSaldo(Float.parseFloat(labelTotal.getText()));
		
		if (!check.isSelected()){
		LinkedList<Producto> listaAVender = moduloVentas.getListaAVender();
		
		
		int selectedIndex = comboCliente.getSelectedIndex();
		Cliente cliente = comboCliente.getItemAt(selectedIndex);
		int indexPagos = comboPagos.getSelectedIndex();

		Date date = new java.util.Date();

		venta.setProductos(moduloVentas.getListaAVender());
		venta.setCuotas(comboPagos.getItemAt(indexPagos));
		venta.setCliente(cliente);
		venta.setFecha(new Timestamp(date.getTime()));
		
		float pago = Float.parseFloat(total.getText());
		venta.addPago(new Pago(cliente,new Timestamp(date.getTime()) ,pago ));

		if (venta.getCuotas() == 1 ) {
			venta.setPorcentajePago(100);
		}else {
			venta.setPorcentajePago((int)100/venta.getCuotas());
			
		}
		venta.setFiado(false);
		
		ventasBO.venderCuotas(venta);
		}else {
			
			LinkedList<Producto> listaAVender = moduloVentas.getListaAVender();

			
			int selectedIndex = comboCliente.getSelectedIndex();
			Cliente cliente = comboCliente.getItemAt(selectedIndex);
			int indexPagos = comboPagos.getSelectedIndex();
			venta.setCuotas(comboPagos.getItemAt(indexPagos));

			Date date = new java.util.Date();

			venta.setProductos(moduloVentas.getListaAVender());
			venta.setCliente(cliente);
			venta.setFecha(new Timestamp(date.getTime()));
			
			float pago = Float.parseFloat(textFiado.getText());
			venta.addPago(new Pago(cliente,new Timestamp(date.getTime()) ,pago ));
			
			venta.setFiado(true);
			
			ventasBO.venderFiado(venta);
			
		
			
			
			
		}
		moduloVentas.refreshLista();
		moduloVentas.refresTabla();
		moduloVentas.getListaAVender().clear();
		moduloVentas.inicializarPrecioTotal();
		moduloVentas.getTabla().requestFocus();
		viewVender.dispose();
		
	}

}
